home *** CD-ROM | disk | FTP | other *** search
/ HAKERIS 11 / HAKERIS 11.ISO / linux / system / LinuxConsole 0.4 / linuxconsole0.4install-en.iso / guile0.4.lcm / share / guile / slib / README < prev    next >
Encoding:
Text File  |  2004-01-06  |  11.7 KB  |  251 lines

  1. This directory contains the distribution of Scheme Library slib2c8.
  2. Slib conforms to Revised^5 Report on the Algorithmic Language Scheme
  3. and the IEEE P1178 specification.  Slib supports Unix and similar
  4. systems, VMS, and MS-DOS.
  5.  
  6. The maintainer can be reached at jaffer @ ai.mit.edu.
  7.         http://swissnet.ai.mit.edu/~jaffer/SLIB.html
  8.  
  9.                    MANIFEST
  10.  
  11.   `README' is this file.  It contains a MANIFEST, INSTALLATION
  12.     INSTRUCTIONS, and coding guidelines.
  13.   `FAQ' Frequently Asked Questions and answers.
  14.   `ChangeLog' documents changes to slib.
  15.   `slib.texi' has documentation on library packages in TexInfo format.
  16.  
  17.   `Template.scm' Example configuration file.  Copy and customize to
  18.     reflect your system.
  19.   `bigloo.init' is a configuration file for Bigloo.
  20.   `chez.init' is a configuration file for Chez Scheme.
  21.   `elk.init' is a configuration file for ELK 2.1
  22.   `gambit.init' is a configuration file for Gambit Scheme.
  23.   `macscheme.init' is a configuration file for MacScheme.
  24.   `mitscheme.init' is a configuration file for MIT Scheme.
  25.   `mitcomp.pat' is a patch file which adds definitions to SLIB files
  26.     for the MitScheme compiler.
  27.   `pscheme.init' is configuration file for PocketScheme 0.2.5 (WinCE SIOD)
  28.   `RScheme.init' is a configuration file for RScheme.
  29.     `scheme2c.init' is a configuration file for DEC's scheme->c.
  30.   `scheme48.init' is a configuration file for Scheme48.
  31.   `scsh.init' is a configuration file for Scheme-Shell
  32.   `scm.init' is a configuration file for SCM.
  33.   `t3.init' is a configuration file for T3.1 in Scheme mode.
  34.   `STk.init' is a configuration file for STk.
  35.   `umbscheme.init' is a configuration file for umb-scheme.  
  36.   `vscm.init' is a configuration file for VSCM.
  37.   `mklibcat.scm' builds the *catalog* cache.
  38.   `require.scm' has code which allows system independent access to
  39.     the library files.
  40.  
  41.   `Bev2slib.scm' Converts Stephen Bevan's "*.map" files to SLIB catalog entries.
  42.   `format.scm' has Common-Lisp style format.
  43.   `formatst.scm' has code to test format.scm
  44.   `pp.scm' has pretty-print.
  45.   `ppfile.scm' has pprint-file and pprint-filter-file.
  46.   `obj2str.scm' has object->string.
  47.   `strcase.scm' has functions for manipulating the case of strings.
  48.   `genwrite.scm' has a generic-write which is used by pp.scm,
  49.     pp2str.scm and obj2str.scm
  50.   `printf.scm' has printf, fprintf, and sprintf compatible with C.
  51.   `scanf.scm' has scanf, fscanf, and sscanf compatible by C.
  52.   `lineio' has line oriented input/output functions.
  53.   `qp.scm' has printer safe for circular structures.
  54.   `break.scm' has break and continue.
  55.   `trace.scm' has trace and untrace for tracing function execution.
  56.   `debug.scm' has handy higher level debugging aids.
  57.   `strport.scm' has routines for string-ports.
  58.   `strsrch.scm' search for chars or substrings in strings and ports.
  59.  
  60.   `alist.scm' has functions accessing and modifying association lists.
  61.   `hash.scm' defines hash, hashq, and hashv.
  62.   `hashtab.scm' has hash tables.
  63.   `sierpinski.scm' 2-dimensional coordinate hash.
  64.   `soundex.scm' English name hash.
  65.   `logical.scm' emulates 2's complement logical operations.
  66.   `random.scm' has random number generator compatible with Common Lisp.
  67.   `randinex.scm' has inexact real number distributions.
  68.   `primes.scm' has primes and probably-prime?.
  69.   `factor.scm' has factor.
  70.   `root.scm' has Newton's and Laguerre's methods for finding roots.
  71.   `minimize.scm' has Golden Section Search for minimum value.
  72.   `cring.scm' extend + and * to custom commutative rings.
  73.   `selfset.scm' sets single letter identifiers to their symbols.
  74.   `determ.scm' compute determinant of list of lists.
  75.   `charplot.scm' has procedure for plotting on character screens.
  76.   `plottest.scm' has code to test charplot.scm.
  77.   `tek40.scm' has routines for Tektronix 4000 series graphics.
  78.   `tek41.scm' has routines for Tektronix 4100 series graphics.
  79.   `getopt.scm' has posix-like getopt for parsing command line arguments. 
  80.   `psxtime.scm' has Posix time conversion routines.
  81.   `cltime.scm' has Common-Lisp time conversion routines.
  82.   `timezone.scm' has the default time-zone, UTC.
  83.   `tzfile.scm' reads sysV style (binary) timezone file.
  84.   `comparse.scm' has shell-like command parsing.
  85.  
  86.   `rdms.scm' has code to construct a relational database from a base
  87.     table implementation.
  88.   `alistab.scm' has association list base tables.
  89.   `dbutil.scm' has utilities for creating and manipulating relational
  90.     databases.
  91.   `htmlform' generates HTML2.0 forms and service CGI requests from RDB
  92.     command tables.
  93.   `db2html' convert relational database to hyperlinked pages.
  94.   `dbrowse.scm' browses relational databases.
  95.   `paramlst.scm' has procedures for passing parameters by name.
  96.   `getparam.scm' has procedures for converting getopt to parameters.
  97.   `report.scm' prints database reports.
  98.   `schmooz.scm' is a simple, lightweight markup language for
  99.     interspersing Texinfo documentation with Scheme source code.
  100.   `glob.scm' has filename matching and manipulation.
  101.   `batch.scm' Group and execute commands on various operating systems.
  102.   `makcrc.scm' Create Scheme procedure to calculate POSIX.2 checksums
  103.     or other CRCs.
  104.  
  105.   `record.scm' a MITScheme user-definable datatypes package
  106.   `promise.scm' has code from R4RS for supporting DELAY and FORCE.
  107.  
  108.   `repl.scm' has a read-eval-print-loop.
  109.   `defmacex.scm' has defmacro:expand*.
  110.   `mbe.scm' has "Macro by Example" define-syntax.
  111.   `scmacro.scm' is a syntactic closure R4RS macro package.
  112.     r4rsyn.scm, synclo.scm, synrul.scm have syntax definitions
  113.     and support.
  114.   `scmactst.scm' is code for testing SYNTACTIC CLOSURE macros.
  115.   `scainit.scm' is a syntax-case R4RS macro package.
  116.     scaglob.scm scamacr.scm scaoutp.scm scaexpp.scm have
  117.     syntax definitions and support.  `syncase.sh' is a shell
  118.     script for producing the SLIB version from the original.
  119.   `macwork.scm' is a "Macros that work" package.
  120.     mwexpand.scm mwdenote.scm mwsynrul.scm have support.
  121.   `macrotst.scm' is code from R4RS for testing macros.
  122.  
  123.   `values.scm' is multiple values.
  124.   `queue.scm' has queues and stacks.
  125.  
  126.   `object.scm' is an object system.
  127.   `yasyn.scm' defines (syntax-rules) macros for object oriented programming.
  128.   `collect.scm' is collection operators (like CL sequences).
  129.   `priorque.scm' has code and documentation for priority queues.
  130.   `wttree.scm' has weight-balanced trees.
  131.   `wttest.scm' tests weight-balanced trees.
  132.   `process.scm' has multi-processing primitives.
  133.   `array.scm' has multi-dimensional arrays and sub-arrays.
  134.   `arraymap.scm' has array-map!, array-for-each, and array-indexes.
  135.  
  136.   `sort.scm' has sorted?, sort, sort!, merge, and merge!.
  137.   `tsort.scm' has topological-sort.
  138.   `comlist.scm' has many common list and mapping procedures.
  139.   `tree.scm' has functions dealing with trees.
  140.   `chap.scm' has functions which compare and create strings in
  141.     "chapter order".
  142.  
  143.   `sc4opt.scm' has optional rev4 procedures.
  144.   `sc4sc3.scm' has procedures to make a rev3 implementation run rev4
  145.     code. 
  146.   `sc2.scm' has rev2 procedures eliminated in subsequent versions.
  147.   `mularg.scm' redefines - and / to take more than 2 arguments.
  148.   `mulapply.scm' redefines apply to take more than 2 arguments.
  149.   `ratize.scm' has function rationalize from Revised^4 spec.
  150.   `trnscrpt.scm' has transcript-on and transcript-off from Revised^4 spec.
  151.   `withfile.scm' has with-input-from-file and with-output-to-file from R4RS.
  152.   `dynwind.scm' has dynamic-wind from R5RS.
  153.   `eval.scm' has eval with environments from R5RS.
  154.   `dwindtst.scm' has routines for characterizing dynamic-wind.
  155.   `dynamic.scm' has DYNAMIC data type [obsolete].
  156.   `fluidlet.scm' has fluid-let syntax.
  157.   `struct.scm' has defmacros which implement RECORDS from the book:
  158.     "Essentials of Programming Languages".
  159.   `structure.scm' has syntax-case macros for the same.
  160.   `structst.scm' has test code for struct.scm.
  161.   `byte.scm' has arrays of small integers.
  162.   `nclients' provides a Scheme interface to FTP and WWW Browsers.
  163.  
  164.               INSTALLATION INSTRUCTIONS
  165.  
  166.   Check the manifest in `README' to find a configuration file for your
  167. Scheme implementation.  Initialization files for most IEEE P1178
  168. compliant Scheme Implementations are included with this distribution.
  169.  
  170.   If the Scheme implementation supports `getenv', then the value of the
  171. shell environment variable SCHEME_LIBRARY_PATH will be used for
  172. `(library-vicinity)' if it is defined.  Currently, Chez, Elk,
  173. MITScheme, scheme->c, VSCM, and SCM support `getenv'.  Scheme48
  174. supports `getenv' but does not use it for determining
  175. `library-vicinity'.  (That is done from the Makefile.)
  176.  
  177.   You should check the definitions of `software-type',
  178. `scheme-implementation-version', `implementation-vicinity', and
  179. `library-vicinity' in the initialization file.  There are comments in
  180. the file for how to configure it.
  181.  
  182.   Once this is done you can modify the startup file for your Scheme
  183. implementation to `load' this initialization file.  SLIB is then
  184. installed.
  185.  
  186.   Multiple implementations of Scheme can all use the same SLIB
  187. directory.  Simply configure each implementation's initialization file
  188. as outlined above.
  189.  
  190.   The SCM implementation does not require any initialization file as
  191. SLIB support is already built in to SCM.  See the documentation with
  192. SCM for installation instructions.
  193.  
  194.   SLIB includes methods to create heap images for the VSCM and Scheme48
  195. implementations.  The instructions for creating a VSCM image are in
  196. comments in `vscm.init'.  To make a Scheme48 image for an installation
  197. under `<prefix>', `cd' to the SLIB directory and type `make
  198. prefix=<prefix> slib48'.  To install the image, type `make
  199. prefix=<prefix> install48'.  This will also create a shell script with
  200. the name `slib48' which will invoke the saved image.
  201.  
  202.              PORTING INSTRUCTIONS
  203.  
  204.   If there is no initialization file for your Scheme implementation, you
  205. will have to create one.  Your Scheme implementation must be largely
  206. compliant with
  207.   `IEEE Std 1178-1990',
  208.   `Revised(4) Report on the Algorithmic Language Scheme', or
  209.   `Revised(5) Report on the Algorithmic Language Scheme'
  210. in order to support SLIB.
  211.  
  212.   `Template.scm' is an example configuration file.  The comments inside
  213. will direct you on how to customize it to reflect your system.  Give
  214. your new initialization file the implementation's name with `.init'
  215. appended.  For instance, if you were porting `foo-scheme' then the
  216. initialization file might be called `foo.init'.
  217.  
  218.   Your customized version should then be loaded as part of your scheme
  219. implementation's initialization.  It will load `require.scm' from the
  220. library; this will allow the use of `provide', `provided?', and
  221. `require' along with the "vicinity" functions.  The rest of the
  222. library will then be accessible in a system independent fashion.
  223.  
  224.   Please mail new working configuration files to `jaffer@ai.mit.edu' so
  225. that they can be included in the SLIB distribution.
  226.  
  227.               CODING GUIDELINES
  228.  
  229.   All library packages are written in IEEE P1178 Scheme and assume that
  230. a configuration file and `require.scm' package have already been
  231. loaded.  Other versions of Scheme can be supported in library packages
  232. as well by using, for example, `(provided? 'rev3-report)' or `(require
  233. 'rev3-report)'.
  234.  
  235.   `require.scm' defines `*catalog*', an association list of module
  236. names and filenames.  When a new package is added to the library, an
  237. entry should be added to `require.scm'.  Local packages can also be
  238. added to `*catalog*' and even shadow entries already in the table.
  239.  
  240.   The module name and `:' should prefix each symbol defined in the
  241. package.  Definitions for external use should then be exported by having
  242. `(define foo module-name:foo)'.
  243.  
  244.   Submitted packages should not duplicate routines which are already in
  245. SLIB files.  Use `require' to force those features to be supported in
  246. your package.  Care should be taken that there are no circularities in
  247. the `require's and `load's between the library packages.
  248.  
  249.   Documentation should be provided in Emacs Texinfo format if possible,
  250. But documentation must be provided.
  251.